package com.gosophia.oa.test.functional;

import org.junit.Test;

import com.gosophia.oa.test.CustomSeleneseTestCase;



public class FTAccountManagement extends CustomSeleneseTestCase {

	@Override
	public void setUp() throws Exception {
		super.setUp("http://localhost:8080/");
	}

	@Override
	public void tearDown() throws Exception {
		if (selenium != null)
			selenium.close();
		super.tearDown();
	}

	public void testListPage() throws Exception {
		// 登录
		selenium.open("/OA/");
		selenium.type("j_username", "admin");
		selenium.type("j_password", "admin");
		selenium.click("loginBtn");
		selenium.waitForPageToLoad("10000");

		// 进入列表页面
		selenium.click("link=账号管理");
		selenium.waitForPageToLoad("10000");
		assertPageTitle("北京市电子行政监察平台-系统账号列表", onPage("账号列表页面"));
		// 等待列表刷新完成
		waitForAppearanceOfElement("//div[@id='dataTable']/table", 10000);

		// 验证页面元素
		String[] listPageElementTexts = {
				"账号名",
				"姓名",
				"创建时间",
				"状态",
				"描述",
				"操作",
				"首页","尾页"
				};
		verifyPresenceOfTexts(listPageElementTexts, onPage("账号列表页面"));
	}
	
	@Test
	public void testAddPage() throws Exception {
		selenium.open("/OA/");
		selenium.type("j_username", "admin");
		selenium.type("j_password", "admin");
		selenium.click("loginBtn");
		selenium.waitForPageToLoad("10000");

		// 进入列表页面
		selenium.click("link=账号管理");
		selenium.waitForPageToLoad("10000");
		assertPageTitle("北京市电子行政监察平台-系统账号列表", onPage("账号列表页面"));
		// 等待列表刷新完成
		waitForAppearanceOfElement("//div[@id='dataTable']/table", 10000);

		//进入新增页面
		selenium.click("createEvent");
		selenium.waitForPageToLoad("10000");
		assertPageTitle("北京市电子行政监察平台-新增系统账号", onPage("新增账号页面"));

		// 验证页面元素
		String[] addPageElementTexts = {
				"新增账号",
				"账号名", "2-16位，中英文、数字或下划线",
				"密码","2-16位",
				"确认密码","请再输入一次账号密码",
				"状态","启用","禁用",
				"账号使用者","只能选择目前尚无账号的联系人",
				"账号角色",
				"账号权限","重置所有权限",
				"描述","最长64位"
				};
		verifyPresenceOfTexts(addPageElementTexts, onPage("新增账号页面"));
	}
	
	@Test
	public void testEditPage() throws Exception {
		selenium.open("/OA/");
		selenium.type("j_username", "admin");
		selenium.type("j_password", "admin");
		selenium.click("loginBtn");
		selenium.waitForPageToLoad("10000");

		// 进入列表页面
		selenium.click("link=账号管理");
		selenium.waitForPageToLoad("10000");
		assertPageTitle("北京市电子行政监察平台-系统账号列表", onPage("账号列表页面"));
		// 等待列表刷新完成
		waitForAppearanceOfElement("//div[@id='dataTable']/table", 10000);

		//编辑
		selenium.click("link=编辑");
		selenium.waitForPageToLoad("10000");
		assertPageTitle("北京市电子行政监察平台-编辑系统账号", onPage("账号编辑页面"));

		// 验证页面元素
		String[] editPageElementTexts = {
				"编辑账号",
				"账号创建时间",
				"账号名",
				"账号密码","将账号密码重置123456",
				"状态","启用","禁用",
				"账号使用者",
				"账号角色",
				"账号权限","重置所有权限",
				"描述"
				};
		verifyPresenceOfTexts(editPageElementTexts, onPage("账号编辑页面"));
	}
	
	@Test
	public void testDetailsPage() throws Exception {
		selenium.open("/OA/");
		selenium.type("j_username", "admin");
		selenium.type("j_password", "admin");
		selenium.click("loginBtn");
		selenium.waitForPageToLoad("10000");

		// 进入列表页面
		selenium.click("link=账号管理");
		selenium.waitForPageToLoad("10000");
		assertPageTitle("北京市电子行政监察平台-系统账号列表", onPage("账号列表页面"));
		// 等待列表刷新完成
		waitForAppearanceOfElement("//div[@id='dataTable']/table", 10000);

		//进入详细页面
		selenium.click("link=admin");
		selenium.waitForPopUp("", "10000");
		selenium.selectPopUp("");
		assertPageTitle("北京市电子行政监察平台-系统账号详细", onPage("账号详细页面"));

		// 验证页面元素
		String[] detailsPageElementTexts = {
				"账号详细信息",
				"创建时间",
				"账号名",
				"状态",
				"账号使用者",
				"账号角色",
				"账号权限",
				"描述"
				};
		verifyPresenceOfTexts(detailsPageElementTexts, onPage("账号详细页面"));
	}

}
